公式サイトを参照
URPプロジェクトにてURPを利用していないサンプルプロジェクトを導入して開いた時、 ワールド全体が紫の蛍光カラーになっている事があると思います
URP12前は Edit → Renderer 項目の中からShaderをURPにコンバートできましたが、URP12から変換方法が変わったようです
コンバート方法
**WIndow → Rendering → Render Pipeline Converter ** を選択します
それぞれの選択肢は以下です
|名前| |Convert Build-in to 2D(URP)|Built-in Render Pipeline 2D から URP 2D にマテリアルを変換します| |Built-in Render Pipeline 2D (URP) Asset|2DアセットをURP12以降のアセットに変換 URP12以前に利用されていたParametricライトをFreeformライトに変換します |https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.0/manual/LightTypes.html| |Built-in to URP|Build-in Render Pipeline で利用されていたアセットをURPに変更します
- Rendering Settings
- URPの設定がない場合必要なアセットも作成します
- Material
- AnimationClip
- Read-only Material COnverter|
今回、マテリアルを更新するには Built-in to URP を選択します
次に変換する内容ですが、今回の例ではMaterialのShaderを変換したいため MaterialUpgrade、Readonly Material Converter のみをチェック入れる形で問題ありません
今回は試しに全チェックを入れて Initialize Converters (DryRunを行い、実際にコンバートは行いません)を押してみます
Materialの箇所のみ変更対象が表示されました ここから実際に変換を行うマテリアルにはチェックON、しないものはチェックを外します
StantardシェーダーがConvertされ紫の表示箇所が問題なくなりました
その他
コンバートあと、いくつかのマテリアルがエラー表示になっていました
Unlit/Transparent Shaderを利用しているマテリアルのようです
しかしこれはURP環境でも引き続き利用できるため変換不要(変換先がない)のでコンバートされなかったと思われます
URP15からはさらに変換されるオプションが増える予感です
また、スクリプトからコンバート実行できるためバッチ処理が出きるようです
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.Rendering.Universal;
using UnityEngine;
public class MyUpgradeScript : MonoBehaviour
{
public static void ConvertBuiltinToURPMaterials()
{
// Material & ReadonlyMaterial をコンバート
Converters.RunInBatchMode(
ConverterContainerId.BuiltInToURP
, new List<ConverterId> {
ConverterId.Material,
ConverterId.ReadonlyMaterial
}
, ConverterFilter.Inclusive
);
EditorApplication.Exit(0);
}
}
次のように実行します
"<path to Unity application> -projectPath <project path> -batchmode -executeMethod MyUpgradeScript.ConvertBuiltinToURPMaterials